package com.winner.data.util;

import com.winner.data.entity.User;

/**
 * ThreadLocal和成员变量的区别与使用
 *
 * 每个线程都可以独立地访问自己的 ThreadLocal 变量，而不会干扰其他线程的数据。这对于一些需要在线程间隔离数据的场景非常有用，比如在 web 应用中存储用户会话信息。
 * 当前线程设置变量,传递参数  在自己线程内共享变量
 *
 * @author wangxinle5
 * @since 2023-11-22
 */
public class ThreadLocalUtil {

    public static final ThreadLocal<User> threadLocal = new ThreadLocal<>();

    public static void main(String[] args) {
        User user = new User(1L, "zhangsan");
        threadLocal.set(user);
        sayHi();
    }

    private static void sayHi() {
        User user = threadLocal.get();
        System.out.println(user);
        threadLocal.remove();
    }
}
